/*
 * RegistroArbol.h
 *
 *  Created on: 20/04/2013
 *      Author: juan
 */

#ifndef REGISTROARBOL_H_
#define REGISTROARBOL_H_

#include <stdlib.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include <list>
#include "./Clave.h"

using namespace std;

class RegistroArbol {
public:
	RegistroArbol(Clave cancion);
	virtual ~RegistroArbol();

	int persistir(char* ss);
	int agregar(Clave cancion, unsigned int id);
	int borrar(Clave clave, unsigned int id);
	int bytesOcupados();
    bool isEmpty();
    bool tieneElId(unsigned int id);
    void mostrar();

    list<unsigned int> * getId();
    int getLongitud();
    Clave getClave();

private:
	//El orden en el archivo va a ser:
	//longitud (que corresponde a clave) - clave - id id id
	//Capaz tendriamos que guardar cantidad de ids
	Clave  clave; //Hay que cambiarlo por la genericidad
	list<unsigned int> * id;
	short unsigned int longitud;
	short unsigned int cantidad_ids;
};

#endif /* REGISTROARBOL_H_ */
